package types

import "fmt"

/*
错误使用的例子

开发者在做强制类型转换时，需要注意数据长度被截短而发生的数据精度损失(比如
将浮点数强制转为整数)和值溢出(值超过转换的目标类型的值范围时)问题
*/
func DemoTypeWrongUsage() {

	var value2 int32
	value1 := 64 //value1将会被自动推导为int类型
	// value2 = value1 //编译错误
	value2 = int32(value1) // 编译通过, value1被转化为int类型
	fmt.Println(value2)
}

func DemoIntOperation() {
	fmt.Println(5 % 3)
}

func DemoIntcompare() {
	i, j := 1, 2
	if i == j {
		fmt.Println("i and j are equal")
	}

	var k int32
	var v int64

	k, v = 1, 2
	//以下代码将会出现错误，不同的数据类型无法比较。
	//错误信息：invalid operation: cannot compare k == v (mismatched types int32 and int64)

	// if k == v {
	// 	fmt.Println("k and v are equal")
	// }

	if k == 1 || v == 2 {
		fmt.Println("k and v are equal")
	}

	if int64(k) != v {
		fmt.Println("k and v are not equal")
	}
}

//Go语言支持 <<（左移）、>>（右移）、 ^（异或）、 &（与）、 |（或）、 ^x（取反）的位运算
func DemoBitOperation() {

}
